<?php
/**
 * Description of mailclass
 *
 * @author del Valle, Federico <quaidy@gmail.com>
 */
class email {
  private $destinatarios = array();
  private $remitente = array();
  private $cuerpo = array();
  private $usuario;
  private $password;
  private $puerto;
  private $host;
  private $auth;
  private $asunto;
  private $tipo = null;
  private $timeout = 10;
  
  public function __construct($mail_remitente,$nombre_remitente,$tipo_de_envio = null)  {

    $this->remitente["mail"] = (is_email($mail_remitente)) ? $mail_remitente : "";
    $this->remitente["nombre"] = $nombre_remitente;

    if ($tipo_de_envio != "smtp" && $tipo_de_envio != "pop3" && $tipo_de_envio != null ) {
      throw new Exception("Tipo de envio no valido");
    } else {
      $this->tipo = $tipo_de_envio;
    }

    if (!empty($this->tipo)) {
      //tomamos la configuracion del mail
      if (configManager::obtener("general","devmode")) { //si estamos en modo dev
        $mail_config = configManager::obtener("mailing","dev");
      } else {
        $mail_config = configManager::obtener("mailing","principal");
      }
      $this->host = $mail_config[$tipo_de_envio];
      $this->usuario = $mail_config["usuario"];
      $this->password = $mail_config["password"];
      $this->puerto = $mail_config["puerto"];
      $this->auth = $mail_config["auth"];
    }
  }

  /**
   * Agrega un destinatario
   *
   * @param String $to_mail mail del destinatario
   * @param String $to_name nombre del destinatario
   */
  public function agrega_un_destinatario($to_mail,$to_name) {
    $this->destinatarios[$to_mail] = $to_name;
  }

  /**
   * Remueve un destinatario
   * 
   * @param String $from_mail mail del destinatario a eliminar
   */
  public function remover_un_destintario($from_mail) {
    unset($this->destinatarios[$from_mail]);
  }

  /**
   * Setea el cuerpo del mail
   *
   * @param String $asunto asunto del email
   * @param html $cuerpo_html cuerpo en formato html
   * @param String $cuerpo_txt cuerpo en formato texto
   */
  public function set_cuerpo($asunto,$cuerpo_html,$cuerpo_txt = "") {
    $this->asunto = $asunto;
    $this->cuerpo["html"] = $cuerpo_html;
    $this->cuerpo["txt"] = $cuerpo_txt;
  }
 

  /**
   * Envia el email
   */
  public function enviar() {
    if (configManager::obtener("general","devmode")) {

      $keys = array_keys($this->destinatarios);
      $datos = array(
          "to" => $keys[0],
          "asunto" => $this->asunto,
          "mensaje" => $this->cuerpo["html"],
      );
      
      
      return send_by_post("http://xeta.com.ar/send_email.php", json_encode($datos));
    } else {
      if (empty($this->tipo)) {
        mail($to, $subject, $message);
      } else {
        $mailer = new PHPMailer();

        $mailer->PluginDir = realpath("../frame/".configManager::obtener("rutas","phpmailer")."/");
        $mailer->Mailer = strtoupper($this->tipo);
        $mailer->IsHTML(true);
        $mailer->SMTPAuth = (bool)$this->auth;
        $mailer->SMTPAuth = true;
        $mailer->Host = $this->host;
        $mailer->Username = $this->usuario;
        $mailer->Password = $this->password;
        $mailer->From = $this->remitente["mail"];
        $mailer->FromName = $this->remitente["nombre"];
        $mailer->Timeout = $this->timeout;
        foreach($this->destinatarios as $mail => $nombre) {
          $mailer->AddAddress($mail, $nombre);
        }
        $mailer->Subject = $this->asunto;
        $mailer->Body = $this->cuerpo["html"];
        $mailer->AltBody = $this->cuerpo["txt"];
        
        //TODO: guardar mail en un  archivo
        if ($mailer->Send()) {
          return true;
        } else {
          return false;
        }
      }
    }
  }
  
}
?>
